Skip to content

fix(development-pr-workflow): backtest-change also triggers for NEW monitors/gates - #555

Merged
dylanschmittle-uniswap merged 5 commits into
nextfrom
dylanschmittle/backtest-change-new-monitor-trigger
Aug 10, 2026
Merged

fix(development-pr-workflow): backtest-change also triggers for NEW monitors/gates#555
dylanschmittle-uniswap merged 5 commits into
nextfrom
dylanschmittle/backtest-change-new-monitor-trigger

Conversation

@dylanschmittle-uniswap

@dylanschmittle-uniswap dylanschmittle-uniswap commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Description

  • The backtest-change trigger language only advertised itself for changes to existing data-driven config ("Before opening a PR for a data-driven change…"), so authoring a brand-new monitor with a backtest-derived threshold never triggered it — even though the methodology is identical. Concrete miss: the INF-335 EGW-Go blue/green gate PR (Uniswap/backend#11307, 2026-07-30) ran the exact backtest-change workflow (21d live-history replay, threshold headroom statement) manually because the trigger language didn't cover new-monitor authoring.
  • Adds new-monitor/gate/alert trigger language, plus joint rate-AND-floor replay for gate composites in the workflow itself (raw per-group maxes are inflated by floor-masked drain-tails).
  • Rebased onto next, which converted this command into a thin wrapper over skills/backtest-change/SKILL.md (#553). The change therefore lands on the skill, since that is what auto-triggers; the command keeps next's wording.

Blast radius: skills/backtest-change/SKILL.md (description + step 4), plus the development-pr-workflow version bump and the root CLAUDE.md version table. Minor bump (2.4.0 → 2.5.0): step 4 gains a backward-compatible workflow requirement, not just wording.

Testing

  • Frontmatter YAML-parses via yaml.safe_load → 4 keys (name, description, allowed-tools, model); an earlier single-line conversion left an unquoted : in the value and did not parse — caught in review, fixed by rewording the two : sequences to em dashes rather than adding quotes (0 of 43 skills quote their description)
  • node scripts/validate-plugin.cjs packages/plugins/development-pr-workflow passes at 2.5.0
  • Swept every plugin SKILL.md/commands//agents/ frontmatter for parse errors; the 6 that fail are pre-existing on next and untouched here

…onitors/gates

The command only advertised itself for CHANGES to existing data-driven
config, so authoring a brand-new gate monitor with a backtest-derived
threshold (the INF-335 EGW-Go blue/green gate) didn't trigger it even
though the methodology is identical. Add new-monitor/gate trigger
language and mention joint rate-AND-floor replay for gate composites.
@vercel

vercel Bot commented Jul 30, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
ai-toolkit-slack-oauth-backend Ready Ready Preview Aug 10, 2026 5:17pm

Request Review

@github-actions

github-actions Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

📚 Documentation Check ✅

Verdict: Passed

The only plugin touched (development-pr-workflow) had its version bumped from 2.4.0 to 2.5.0 in plugin.json, and the root CLAUDE.md version table was updated to match in the same diff — satisfying the blocking version-bump requirement. No other missing documentation was found.


Summary

PR #555 makes three changes, all in development-pr-workflow:

  1. packages/plugins/development-pr-workflow/.claude-plugin/plugin.json — version bumped 2.4.02.5.0.
  2. CLAUDE.md — the plugin version table row for development-pr-workflow updated to 2.5.0 in the same commit, staying consistent with (1).
  3. skills/backtest-change/SKILL.md — frontmatter description collapsed from a multi-line YAML block scalar to a single line (973 chars, under the 1024-char cap) and reworded slightly; skill body gained a short paragraph instructing that composite gate conditions (e.g. a rate condition AND a traffic floor) be backtested jointly rather than independently, since per-condition replay overstates what the composite actually does.

Version bump check (critical): A file under packages/plugins/development-pr-workflow/ was modified, and the plugin's plugin.json version was bumped accordingly, with CLAUDE.md's table kept in sync — this satisfies the blocking requirement (fail_on_missing_version: true).

Bump size: Minor (2.4.0→2.5.0) is defensible — the change adds new backtesting guidance (composite-condition handling) to an existing skill, which the repo's own rules class as a "backward-compatible enhancement."

Other docs checked: The plugin's own CLAUDE.md and README.md describe backtest-change at a summary level ("Gate a data-driven change on live historical data... refuse to ship when data disproves premise") that remains accurate after this change; no edit needed there. The root README.md plugin table doesn't carry version numbers, so no update needed there either.

No blocking or informational gaps found.

✨ No Documentation Updates Needed

All documentation appears to be up to date with the code changes.


🤖 Generated by Claude Documentation Validator | Mode: suggest

@dylanschmittle-uniswap
dylanschmittle-uniswap marked this pull request as ready for review July 30, 2026 20:38
@dylanschmittle-uniswap
dylanschmittle-uniswap requested a review from a team as a code owner July 30, 2026 20:38
@github-actions

github-actions Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

● Reviewed · against aaf6fe9 · 2026-08-10 17:24 UTC · 3 reviews · view run ↗

Latest: ✅ approved ← prior: 🚨 changes requested (1) ← 🚨 changes requested (2)

Note

Approved.

Broadens the backtest-change skill description to also fire for brand-new monitors/gates/alerts, and adds joint-replay guidance for composite gate conditions to step 4.

Iteration history · 3 reviews
2026-08-10 17:24 UTC · ✅ approved · 0 findings · aaf6fe9 · run ↗

(no findings)

2026-08-10 17:08 UTC · 🚨 changes requested · 1 finding · ddf4dde · run ↗
  • packages/plugins/development-pr-workflow/skills/backtest-change/SKILL.md:3 — warning · correctness
2026-08-07 20:27 UTC · 🚨 changes requested · 2 findings · 660019f · run ↗
  • packages/plugins/development-pr-workflow/skills/backtest-change/SKILL.md:3 — critical · correctness
  • packages/plugins/development-pr-workflow/.claude-plugin/plugin.json:3 — info · plugin-conventions

Tip

Teach the reviewer. React 👍 on findings that helped, 👎 on false positives. Reply to push back or add context — we aggregate this weekly to tune the bot.

Comment @request-claude-review to re-run.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📋 Review verdict: COMMENT

👆 The main review comment above is the source of truth for this PR review. It is automatically updated on each review cycle, so always refer to it for the most current feedback.

This formal review submission is for the verdict only.

…kill

The base branch converted the backtest-change command into a thin wrapper
over a skill, so the trigger wording this branch broadened now belongs on
the skill's description — that is what auto-triggers.

- Take next's command description (no longer drives triggering)
- Skill description: fires for brand-new monitors/gates, not just edits
- Replay step: composite gates must be replayed jointly, since
  per-condition counts overstate what the gate does
- Bump development-pr-workflow 2.4.0 -> 2.4.1 (+ root CLAUDE.md table)
Comment thread packages/plugins/development-pr-workflow/skills/backtest-change/SKILL.md Outdated
Matches the dominant repo convention (40 of 43 SKILL.md files use a
single-line description; only 3 used the folded scalar). Addresses
review feedback on the mid-sentence line breaks. Text unchanged.
Comment thread packages/plugins/development-pr-workflow/skills/backtest-change/SKILL.md Outdated
Comment thread packages/plugins/development-pr-workflow/.claude-plugin/plugin.json Outdated

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

⚠️ Changes requested — see full review in the sticky comment ↑

The single-line description conversion left two unquoted ': ' sequences
in a plain YAML scalar, so the frontmatter failed to parse and the skill
would not have registered at all — the inverse of this PR's goal. Reword
those to em dashes rather than quoting: no skill in the repo quotes its
description, so quoting would trade one outlier for another.

Also bump 2.4.1 -> 2.5.0. Step 4 gained a joint-composite-replay
requirement, which is a backward-compatible capability, not the wording
change a patch bump implies.
@dylanschmittle-uniswap

Copy link
Copy Markdown
Contributor Author

@request-claude-review

Both findings addressed in ddf4dde:

  • critical / frontmatter no longer parses — real regression, confirmed via yaml.safe_load. Fixed by rewording the two : sequences to em dashes rather than quoting, since 0 of 43 skills quote their description and 41 are plain-unquoted.
  • info / version bump — agreed, 2.4.1 → 2.5.0, and the PR body's stale "command body untouched" line is corrected.

Comment thread packages/plugins/development-pr-workflow/skills/backtest-change/SKILL.md Outdated
@github-actions

Copy link
Copy Markdown
Contributor

Reviewing now · view run ↗

This comment will update when the review completes. Findings will appear in the sticky summary above.

The added trigger scope pushed the description to 1294 chars, past the
1024-char cap in the Agent Skills spec and the only one in the repo over
it. validate-plugin.cjs does not check length, so CI would not catch a
truncated or rejected description — which would stop the skill
auto-triggering, the opposite of this PR's intent.

Trimmed to 973 by cutting non-triggering text rather than trigger
phrases: five redundant quoted phrases, the 'always report old N vs
new M' directive (already step 4 of the body), and the note that the
command loads this skill (already stated in the command file).
@dylanschmittle-uniswap

Copy link
Copy Markdown
Contributor Author

@request-claude-review

Description length finding addressed in aaf6fe9 — 973 chars, 51 under the 1024 cap, trigger phrases preserved (trimmed the restated workflow directive and command-loads-skill note instead).

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note

Approved — see full review in the sticky comment ↑

@github-actions

Copy link
Copy Markdown
Contributor

Reviewing now · view run ↗

This comment will update when the review completes. Findings will appear in the sticky summary above.

@dylanschmittle-uniswap
dylanschmittle-uniswap merged commit 43413c7 into next Aug 10, 2026
25 checks passed
@dylanschmittle-uniswap
dylanschmittle-uniswap deleted the dylanschmittle/backtest-change-new-monitor-trigger branch August 10, 2026 17:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants